package com.ms.service.module.analysisgroup;

import com.ms.game.itembox.AccountItemChangeWay;
import com.ms.game.itembox.ItemChangeWay;

/**
 * 統計使用的計算物品變化方式
 *
 */
public enum ItemCountWay {

	/**產出*/
	CREATE,
	
	/**使用*/
	USE,
	
	/**交易*/
	TRADE,
	
	/**過期*/
	TIME_OUT,
	
	/**非法物品(itemID有誤)*/
	INVALID_ITEM,
	
	/**其他(可能是指令之類的)*/
	OTHER;
	
	
	/**
	 * 從物品變化方式取得計算方式
	 */
	public static ItemCountWay getItemCountWayByItemChangeWay(ItemChangeWay changeWay){
		//如果是增加
		if(changeWay.isAdd()){
			//是交易產生的
			if(changeWay.isSendGiftRecvItem()){
				//而且成功的才算
				if(changeWay.equals(ItemChangeWay.ADD_SEND_GIFT)){
					return TRADE;
				}
				//交易的其他方式增加會被捨棄統計
			}
			else{
				return CREATE;
			}
		}
		
		//如果是減少
		if(changeWay.isSubtract()){
			//減少的用switch做
			switch (changeWay) {
			case SUB_USE_ITEM:{
				return USE;
			}
			case SUB_ITEM_REFINE_TIME_EXPIRE:{
				return TIME_OUT;
			}
			case SUB_INVALID_ITEM_ID:{
				return INVALID_ITEM;
			}
			//目前只有計算使用、過期、非法物品
			default:
				return OTHER;
			}
		}
		
		return null;
	}
	
	/**
	 * 從帳號物品變化取得計算方式
	 */
	public static ItemCountWay getItemCountWayByAccountItemChangeWay(AccountItemChangeWay accountItemChangeWay){
		if(accountItemChangeWay.getId() > 0){
			return CREATE;
		}
		else {
			switch (accountItemChangeWay) {
			case SUB_ADD_TO_CHARACTOR:{
				return USE;
			}
			case SUB_INVALID_ITEM_ID:{
				return INVALID_ITEM;
			}
			case SUB_TIME_EXPIRE:{
				return TIME_OUT;
			}
			default:
				return OTHER;
			}
		}
	}
}
